package leetcode.editor.cn;

//给定一个非负整数，你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 
//
// 示例 1 : 
//
// 
//输入: 2736
//输出: 7236
//解释: 交换数字2和数字7。
// 
//
// 示例 2 : 
//
// 
//输入: 9973
//输出: 9973
//解释: 不需要交换。
// 
//
// 注意: 
//
// 
// 给定数字的范围是 [0, 10⁸] 
// 
// Related Topics 贪心 数学 👍 221 👎 0

import java.util.Arrays;

//Java：最大交换
public class MaximumSwap_670{
    public static void main(String[] args) {
        Solution solution = new MaximumSwap_670().new Solution();
        // TO TEST
    }
    
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int maximumSwap(int num) {
            String str = String.valueOf(num);
            int[] arr = new int[str.length()];
            int index =0;
            while(num>0){
                arr[arr.length-index-1]=num%10;
                num/=10;
                index++;
            }
            int chance =1;
            for (int i = 0; i < arr.length-1 && chance>0; i++) {
                int tmp=arr[i],tmpIndex=i;
                for (int j = i+1; j < arr.length; j++) {
                    if(arr[j]>=tmp){
                        tmp=arr[j];
                        tmpIndex=j;
                    }
                }
                if(tmp!=arr[i]){
                    chance--;
                    arr[tmpIndex]=arr[i];
                    arr[i]=tmp;
                }
            }
            int res =0;
            for (int i = 0; i <arr.length; i++) {
                res = res*10+arr[i];
            }
            return res;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}
